<?php
/**
 * Created by PhpStorm.
 * User: Jagger
 * Date: 2016/7/18
 */
namespace soa\kbpush;
use artisan\queue;
use soa\kbpush\ios\ios;
use artisan\config;
use artisan\db;
use artisan\cache;
use artisan\http;
use soa\check\EnvCheck;
define('SDK_PATCH', dirname(__FILE__));
require_once SDK_PATCH.'/android/PushSDK.php';
//require_once SDK_PATCH.'/ios/Demo.php';
require_once SDK_PATCH.'/ios/ios.php';
class KbPush
{

    private $sdk='';
    private $iosSDK='';
    //代表着安卓的透传 msg_expires 代表的是有效时间
    private $opts = array (
        'msg_type' => 0,
        'msg_expires' => 86400
    );
    public function __construct()
    {
        $this->sdk=new \PushSDK();
//        $this->iosSDK=new \Demo();
        $this->iosSDK=new ios();
    }

    /**
     * 此方法为针对单一客户端进行发送消息；或使用于测试
     * 仅用于android设备
     * @param array $message
     * @param string $channel_id
     * @return bool
     */
    public function testpush($message=array(),$channel_id='')
    {
        if(EnvCheck::isEnvVPC()){
            logDebug('ENV_VPC','CESHI');
            return [];
        }

        if(empty($channel_id) || !is_array($message))
        {
            return false;
        }
        $opts = array (
            'msg_type' => 0
        );
        $res=$this->sdk->pushMsgToSingleDevice($channel_id,$message,$opts);
        return $res;
    }
    /*
     * 返回统计数字及发送状态（仅用于pushAll方法）
     * $param string  $id
     * $return array
     */
    public function getPushSuccessNum($id)
    {
        if(EnvCheck::isEnvVPC()){
            return [];
        }
        $data=$this->sdk->queryMsgStatus($id);
        return $data;
    }
    /**
     * @param array $idArr 用户channel_id的数组
     * @param array $msg  所发送的信息
     * @return bool
     * @用于向一组指定的设备发送一条信息
     * @仅用于android设备
     */
    public function getPushBatchUniMsg($idArr, $msg ){
        $res= $this->sdk ->pushBatchUniMsg($idArr, $msg );
        return $res;
    }
    /**
     * @param array $message
     * @return bool
     * @此推送向所有的用户进行推送
     * @仅用于android设备
     */
    public function pushAll(array $message)
    {
        if(EnvCheck::isEnvVPC()){
            return [];
        }
        $res=$this->sdk->pushMsgToAll($message,$this->opts);
        cache::incr(date('Y-m-d').'helpSoaKpAll');
        return $res;
    }

    /**
     * @param array $message 此数组有固定格式;
     * @return bool
     * @此方法用于向android及Ios端进行推送
     * @此Ios位置为向ios服务器发送
     */
    public function pushAndroidAndIosToAll(array $message)
    {
        $androidRet = $this->pushAll($message);
        if($androidRet == false)
        {
            logDebug($androidRet,'androidRet');
        }
        //ios推送调用接口的url
         $IosPushUrl = 'http://message.core.kuaidihelp.com/push/courierIosPushToAll';
         $iosRet = http::post($IosPushUrl,$message['custom_content']);
         if($iosRet == false)
         {
            logDebug($iosRet,'iosRet');
         }
         return true;
    }
    /**
     * 此方法为百度云向IOS端进行推送方法；暂未使用
     */
    public function iosPush($string,$token,$type)
    {
        $this->iosSDK->send($string, $token, $type);
    }
}

